#include <vector>
#include "../Utilities/utilities.h"
#include "cObject.h"
#include "Defines.h"
using namespace std;

struct Obj
{
	int obj_Id;
	int model_Id;
	int shader_Id;
	
	vector<int> list_Texture_Id;
	Vector3 vPos;
	Vector3 vRot;
	Vector3 vScale;
};

class cSceneManager
{
protected:
	static cSceneManager* s_Instance;

	cSceneManager(){};
	~cSceneManager()
	{
		SAFE_DEL_ARRAY(Object);

		//deallocate each object in list_Object then clear list_Object
		for (vector<Obj*>::iterator iter = list_Object.begin(); iter != list_Object.end(); ++iter)
			SAFE_DEL((*iter));
		list_Object.clear();
	};

	cObject *Object;
	vector<Obj*> list_Object;

public:
	// Static methods
	static cSceneManager* GetInstance();
	static void DestroyInstance();

	void ReadSceneFile();
	void DrawAllObjects();
};